Skip to main content
POST
/
api
/
v1
/
chats
/
{id}
/
end
End a chat session under the `user_end` reason.
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({note: '<string>'})
};

fetch('https://blackbox.dasha.ai/api/v1/chats/{id}/end', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "agent_id": "<string>",
  "channel": "<string>",
  "messages": [
    {
      "role": "<string>",
      "content": "<string>",
      "tool_calls": [
        {
          "id": "<string>",
          "name": "<string>",
          "arguments": "<unknown>",
          "response": "<unknown>"
        }
      ],
      "time": "2023-11-07T05:31:56Z"
    }
  ],
  "created_time": "2023-11-07T05:31:56Z",
  "last_activity": "2023-11-07T05:31:56Z",
  "ttl_seconds": 123,
  "is_final": true,
  "status": "<string>",
  "final_reason": "<string>"
}

Path Parameters

id
string<uuid>
required

Body

Request body for POST /api/v1/chats/{id}/end. Always finalises the session under the user_end reason (the TTL sweeper uses ttl, the agent uses agent_finish) and runs the same !:TextChatCallLifecycle.FinishAsync pipeline a voice call uses — completion webhook + post-call analysis + persistence.

note
string | null

Optional operator-supplied free-form note appended to the activity log for this finalisation. Not used by the pipeline; purely audit metadata.

Response

Session ended (or was already final).

Public projection of a chat session — what callers see via GET /api/v1/chats/{id} and the list endpoint. Deliberately omits the orchestration State blob, the ExternalIdHash, and the worker hot-flags; those are server-internal.

id
string<uuid>

Session identifier.

agent_id
string | null

Agent driving this session. Frozen at open.

channel
string | null

Channel name (web, twilio_sms, …).

messages
object[] | null

Full conversation transcript so far, in send order.

created_time
string<date-time>

Session creation timestamp (UTC).

last_activity
string<date-time>

Most recent activity timestamp (inbound, outbound or assistant turn).

ttl_seconds
integer<int32> | null

Inactivity timeout in seconds; null when no TTL applies.

is_final
boolean

True once the session has terminated.

status
string | null

Status mirror of DashaAI.BlackBox.AgentAPI.TextChat.Dtos.Chats.ChatSessionDto.IsFinal for list-endpoint filtering (active / final).

final_reason
string | null

Reason for finalisation (ttl, user_end, agent_finish, …).